package generateur;

import java.util.Iterator;
import modele.AbstractWhile;
import echiquier.Curseur.EtatCurseur;
import echiquier.Echiquier;
import piece.AbstractPiece;

public class Generateur extends AbstractWhile {

    private final Echiquier echiquier;
    public EtatCurseur etat;
    private final Position position;
    private final Iterator<EtatCurseur> curseur;
    private final Regle regles;

    public Generateur() {
        echiquier = Echiquier.getInstance();
        position = new Position();
        curseur = echiquier.iterateur();
        regles = new Regle(this);
        While();
    }

    @Override
    public boolean hasnext() {
        return !curseur.hasNext();
    }

    @Override
    public void next() {
        etat = curseur.next();
        final AbstractPiece piece = position.piece(etat.CaseAEtudier());
        regles.getCaseOccupee(piece);

    }

    public void traitement() {
        System.out.println(etat.CaseAEtudier() + ":" +
                           etat.LigneCourante().name() + "," +
                           etat.CaseCandidate() + ",");
    }
}








